import createRoute from '../util/route'
export default class History {
  constructor (router) {
    this.router = router
    // 记录当前的路由信息对象
    this.current = createRoute(null, '/')
    // 增加属性 回调标记
    this.cb = null
  }

  // 在 transitionTo中调用，触发回调，给 _route赋值
  listen (cb) {
    this.cb = cb
  }

  // 路径跳转方法
  transitionTo (path, onComplete) {
    // 根据路由地址，匹配路由信息对象
    const current = this.router.matcher.match(path)

    // 在页面跳转之前（重新渲染之前）
    // 执行钩子函数，传入 to 和 from
    this.router.beforeHooks.forEach(hooks => {
      hooks(current, this.current)
    })

    // 更新当前路由信息对象
    this.current = current
    // console.log(this.current)
    // 调用cb 回调函数 并传入当前地址
    this.cb && this.cb(this.current)
    // 他内部注册路由地址变化的事件，在vuerouter初始化的时候
    onComplete && onComplete()
  }
}
